/**
 * 
 */
package com.ms.service.module.baccarat;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.ms.service.module.baccarat.bin.BacrAdvance;

/**
 * 百家樂排程計時器時間長度
 * 
 * @author TW15010
 */
public enum BacrTimerDuration {
	/** 半秒 */
	HALF_SECOND,

	/** 一秒 */
	ONE_SECOND,

	/** 一靴牌開始的洗牌 */
	SHOE_SHUFFLE,

	/** 一靴牌開始的銷牌_第一張點數 */
	SHOE_BURN_CARD_FIRST,

	/** 一靴牌開始的銷牌_依照點數銷牌_單張時間 */
	SHOE_BURN_CARD_OTHER,

	/** 押注時間 */
	BET_TIME,

	/** 發牌 */
	DEALT,

	/** 瞇牌 */
	SQUEEZE_CARD,

	/** 瞇牌_1 */
	SQUEEZE_CARD_1,

	/** 瞇牌_2 */
	SQUEEZE_CARD_2,

	/** 瞇牌_3 */
	SQUEEZE_CARD_3,

	/** 瞇牌_4 */
	SQUEEZE_CARD_4,

	/** 閒家博牌 */
	PLAYER_HIT_CARD,

	/** 莊家博牌 */
	BANKER_HIT_CARD,

	/** 結算分數 */
	BALANCE_SCORE,

	/** 丟棄紅卡時間 */
	DROP_RED_CARD,

	/** 請瞇牌(音效) */
	SQUEEZE_CARD_VOICE,

	/** 閒家X點(音效) */
	PLAYERS_POINT,

	/** 莊家X點(音效) */
	BANKERS_POINT,

	/** 閒家補牌(語音) */
	PLAYER_HIT_VOICE,

	/** 莊家補牌(語音) */
	BANKER_HIT_VOICE,

	/** 莊一對(語音) */
	BANKER_PAIR,

	/** 閒一對(語音) */
	PLAYER_PAIR;

	/** log4j object */
	private static final Log log = LogFactory.getLog(BacrTimerDuration.class);

	/** 時間長度 (ms) */
	private long duration = 0;

	public static void initial() {
		// 掃一遍計時器時間長度的 map 將對應的時間長度填到 enum 中
		HashMap<String, Integer> timerDurationMap = BacrAdvance.getInstance().getTimerDurationMap();
		for (Map.Entry<String, Integer> entry : timerDurationMap.entrySet()) {
			String key = entry.getKey();
			int value = entry.getValue();

			BacrTimerDuration enumItem = null;
			try {
				// 找出 key 對應的列舉項目
				enumItem = BacrTimerDuration.valueOf(key);
			} catch (Exception e) {
				if (log.isErrorEnabled()) {
					log.error(
							"timer key " + key + " not found in enum class "
									+ BacrTimerDuration.class.getSimpleName(), new RuntimeException());
				}
			}

			// 將時間長度填入
			if (enumItem != null) {
				enumItem.duration = value;
			}
		}
	}

	public long getDuration() {
		return duration;
	}
}
